package com.zlq.cn

import com.alibaba.fastjson.JSON

fun main() {

    val data = JSON.parseArray(xxx, RowData::class.java)
//    data.forEach { item ->
//        println(item.pzxz)
//    }
    //println(data.groupBy { it.pzxz })
    val dataGroup = data.groupBy { it.pzxz }
    StockMonthRowEnum.values().forEach { stockMonthRowEnum ->
        if (dataGroup.containsKey(stockMonthRowEnum.keyName)) {
            println(stockMonthRowEnum.rowName)
            dataGroup[stockMonthRowEnum.keyName]?.forEach { rowData ->
                print(rowData.pzmc)
                StockMonthColumnEnum.values().forEach { stockMonthColumnEnum ->
                    print(stockMonthColumnEnum.columnName + "<====>" + rowData[stockMonthColumnEnum.keyName])
                }
                println()
            }
        }

    }
    data.groupBy { it.pzxz }.forEach {
        println(it.key)

    }
//    data.forEach { item ->
//        println(item)
//    }
//    第一个小计是直接求和
//    第二行的计算公式如下：
//    小麦数量+稻谷数量+面粉数量/0.72+大米数量/0.68+玉米/a+大豆/b+食油/c
}

data class StockMonthItem(
        val rowName: String,

)

enum class StockMonthRowEnum(
        val rowName: String,
        val keyName: String = rowName,
) {
    RESERVE_SUB_TOTAL("库存合计"),
    JIA_ZI_GRAIN_SUB_TOTAL("""二、"506"甲字粮小计"""),
    PROVINCE_RESERVE_SUB_TOTAL("三、省级储备粮小计"),
    LOCAL_RESERVE_SUB_TOTAL("四、地方储备粮小计", "地方储备粮原粮合计"),
    COMMODITY_TURNOVER_SUB_TOTAL("五、商品周转粮小计"),
    OTHER_SUB_TOTAL("六、其它粮食小计"),
}

enum class StockMonthColumnEnum(
        val columnName: String,
        val keyName: String = columnName,
) {
    CHAN_CHENG("禅城", "禅城区"),
    NAN_HAI("南海", "南海区"),
    SHUN_DE("顺德", "顺德区"),
    GAO_MING("高明", "高明区"),
    SHAN_SHUI("三水", "三水区"),
    FL_GROUP("佛粮集团"),
    STOCK_SUB_TOTAL("库存实物小计"),
}

class RowData : HashMap<String, Any>() {
    val pzmc: String get() = get("pzmc").toString().replace(" ", "")
    val pzxz: String get() = get("pzxz").toString().replace(" ", "")
}

val xxx = """[
        {
            "pzid": "111",
            "禅城区": 5.00,
            "pzmc": "              其中：1、小麦",
            "高明区": 21.00,
            "顺德区": 17.00,
            "佛粮集团": 40.00,
            "pzxz": "地方储备粮原粮合计",
            "南海区": 21.00,
            "kcswxj": 21.00,
            "三水区": 21.00
        },
        {
            "pzid": "111",
            "禅城区": 63.00,
            "pzmc": "              其中：1、小麦",
            "高明区": 11.00,
            "顺德区": 11.00,
            "佛粮集团": 54.00,
            "pzxz": "库    存    合    计",
            "南海区": 11.00,
            "三水区": 11.00
        },
        {
            "pzid": "111",
            "禅城区": 22.00,
            "pzmc": "              其中：1、小麦",
            "高明区": 38.00,
            "顺德区": 34.00,
            "佛粮集团": 10.00,
            "pzxz": "六、其它粮食小计",
            "南海区": 38.00,
            "三水区": 38.00
        },
        {
            "pzid": "111",
            "禅城区": 77.00,
            "pzmc": "              其中：1、小麦",
            "高明区": 14.00,
            "顺德区": 25.00,
            "佛粮集团": 33.00,
            "pzxz": "三、省级储备粮小计",
            "南海区": 14.00,
            "三水区": 14.00
        },
        {
            "pzid": "111",
            "禅城区": 13.00,
            "pzmc": "              其中：1、小麦",
            "高明区": 29.00,
            "顺德区": 25.00,
            "佛粮集团": 1.00,
            "pzxz": "五、商品周转粮小计",
            "南海区": 29.00,
            "三水区": 29.00
        },
        {
            "pzid": "112",
            "禅城区": 9.00,
            "pzmc": "                          5、玉米",
            "高明区": 25.00,
            "顺德区": 21.00,
            "佛粮集团": 44.00,
            "pzxz": "地方储备粮原粮合计",
            "南海区": 25.00,
            "三水区": 25.00
        },
        {
            "pzid": "112",
            "禅城区": 67.00,
            "pzmc": "                          5、玉米",
            "高明区": 4.00,
            "顺德区": 15.00,
            "佛粮集团": 58.00,
            "pzxz": "库    存    合    计",
            "南海区": 4.00,
            "三水区": 4.00
        },
        {
            "pzid": "112",
            "禅城区": 26.00,
            "pzmc": "                          5、玉米",
            "高明区": 42.00,
            "顺德区": 38.00,
            "佛粮集团": 14.00,
            "pzxz": "六、其它粮食小计",
            "南海区": 42.00,
            "三水区": 42.00
        },
        {
            "pzid": "112",
            "禅城区": 17.00,
            "pzmc": "                          5、玉米",
            "高明区": 33.00,
            "顺德区": 29.00,
            "佛粮集团": 5.00,
            "pzxz": "五、商品周转粮小计",
            "南海区": 33.00,
            "三水区": 33.00
        },
        {
            "pzid": "113",
            "禅城区": 78.00,
            "pzmc": "                          2、稻谷",
            "高明区": 15.00,
            "顺德区": 26.00,
            "佛粮集团": 34.00,
            "pzxz": "三、省级储备粮小计",
            "南海区": 15.00,
            "三水区": 15.00
        },
        {
            "pzid": "113",
            "禅城区": 7.00,
            "pzmc": "                          3、稻谷",
            "高明区": 23.00,
            "顺德区": 19.00,
            "佛粮集团": 42.00,
            "pzxz": "地方储备粮原粮合计",
            "南海区": 23.00,
            "三水区": 23.00
        },
        {
            "pzid": "113",
            "禅城区": 65.00,
            "pzmc": "                          3、稻谷",
            "高明区": 2.00,
            "顺德区": 13.00,
            "佛粮集团": 56.00,
            "pzxz": "库    存    合    计",
            "南海区": 2.00,
            "三水区": 2.00
        },
        {
            "pzid": "113",
            "禅城区": 24.00,
            "pzmc": "                          3、稻谷",
            "高明区": 40.00,
            "顺德区": 36.00,
            "佛粮集团": 12.00,
            "pzxz": "六、其它粮食小计",
            "南海区": 40.00,
            "三水区": 40.00
        },
        {
            "pzid": "113",
            "禅城区": 15.00,
            "pzmc": "                          3、稻谷",
            "高明区": 31.00,
            "顺德区": 27.00,
            "佛粮集团": 3.00,
            "pzxz": "五、商品周转粮小计",
            "南海区": 31.00,
            "三水区": 31.00
        },
        {
            "pzid": "113",
            "禅城区": 72.00,
            "pzmc": "          其  中：1、稻  谷 ",
            "高明区": 9.00,
            "顺德区": 20.00,
            "佛粮集团": 63.00,
            "pzxz": "二、"506"甲字粮小计",
            "南海区": 9.00,
            "三水区": 9.00
        },
        {
            "pzid": "118",
            "禅城区": 10.00,
            "pzmc": "                          6、大豆",
            "高明区": 26.00,
            "顺德区": 22.00,
            "佛粮集团": 45.00,
            "pzxz": "地方储备粮原粮合计",
            "南海区": 26.00,
            "三水区": 26.00
        },
        {
            "pzid": "118",
            "禅城区": 68.00,
            "pzmc": "                          6、大豆",
            "高明区": 5.00,
            "顺德区": 16.00,
            "佛粮集团": 59.00,
            "pzxz": "库    存    合    计",
            "南海区": 5.00,
            "三水区": 5.00
        },
        {
            "pzid": "118",
            "禅城区": 27.00,
            "pzmc": "                          6、大豆",
            "高明区": 43.00,
            "顺德区": 39.00,
            "佛粮集团": 15.00,
            "pzxz": "六、其它粮食小计",
            "南海区": 43.00,
            "三水区": 43.00
        },
        {
            "pzid": "118",
            "禅城区": 18.00,
            "pzmc": "                          6、大豆",
            "高明区": 34.00,
            "顺德区": 30.00,
            "佛粮集团": 6.00,
            "pzxz": "五、商品周转粮小计",
            "南海区": 34.00,
            "三水区": 34.00
        },
        {
            "pzid": "118",
            "禅城区": 74.00,
            "pzmc": "                        3、大  豆",
            "高明区": 11.00,
            "顺德区": 22.00,
            "佛粮集团": 65.00,
            "pzxz": "二、"506"甲字粮小计",
            "南海区": 11.00,
            "三水区": 11.00
        },
        {
            "pzid": "119",
            "禅城区": 2.00,
            "pzmc": "                          5、其它",
            "高明区": 18.00,
            "顺德区": 29.00,
            "佛粮集团": 37.00,
            "pzxz": "三、省级储备粮小计",
            "南海区": 18.00,
            "三水区": 18.00
        },
        {
            "pzid": "119",
            "禅城区": 70.00,
            "pzmc": "                          8、其它",
            "高明区": 7.00,
            "顺德区": 18.00,
            "佛粮集团": 61.00,
            "pzxz": "库    存    合    计",
            "南海区": 7.00,
            "三水区": 7.00
        },
        {
            "pzid": "119",
            "禅城区": 29.00,
            "pzmc": "                          8、其它",
            "高明区": 45.00,
            "顺德区": 41.00,
            "佛粮集团": 17.00,
            "pzxz": "六、其它粮食小计",
            "南海区": 45.00,
            "三水区": 45.00
        },
        {
            "pzid": "119",
            "禅城区": 20.00,
            "pzmc": "                          8、其它",
            "高明区": 36.00,
            "顺德区": 32.00,
            "佛粮集团": 8.00,
            "pzxz": "五、商品周转粮小计",
            "南海区": 36.00,
            "三水区": 36.00
        },
        {
            "pzid": "211",
            "禅城区": 80.00,
            "pzmc": "                          4、食油 ",
            "高明区": 17.00,
            "顺德区": 28.00,
            "佛粮集团": 36.00,
            "pzxz": "三、省级储备粮小计",
            "南海区": 17.00,
            "三水区": 17.00
        },
        {
            "pzid": "211",
            "禅城区": 11.00,
            "pzmc": "                          7、食油",
            "高明区": 27.00,
            "顺德区": 23.00,
            "佛粮集团": 46.00,
            "pzxz": "地方储备粮原粮合计",
            "南海区": 27.00,
            "三水区": 27.00
        },
        {
            "pzid": "211",
            "禅城区": 69.00,
            "pzmc": "                          7、食油",
            "高明区": 6.00,
            "顺德区": 17.00,
            "佛粮集团": 60.00,
            "pzxz": "库    存    合    计",
            "南海区": 6.00,
            "三水区": 6.00
        },
        {
            "pzid": "211",
            "禅城区": 28.00,
            "pzmc": "                          7、食油",
            "高明区": 44.00,
            "顺德区": 40.00,
            "佛粮集团": 16.00,
            "pzxz": "六、其它粮食小计",
            "南海区": 44.00,
            "三水区": 44.00
        },
        {
            "pzid": "211",
            "禅城区": 19.00,
            "pzmc": "                          7、食油",
            "高明区": 35.00,
            "顺德区": 31.00,
            "佛粮集团": 7.00,
            "pzxz": "五、商品周转粮小计",
            "南海区": 35.00,
            "三水区": 35.00
        },
        {
            "pzid": "211",
            "禅城区": 75.00,
            "pzmc": "                        4、食  油",
            "高明区": 12.00,
            "顺德区": 23.00,
            "佛粮集团": 66.00,
            "pzxz": "二、"506"甲字粮小计",
            "南海区": 12.00,
            "三水区": 12.00
        },
        {
            "pzid": "231",
            "禅城区": 6.00,
            "pzmc": "                          2、面粉",
            "高明区": 22.00,
            "顺德区": 18.00,
            "佛粮集团": 41.00,
            "pzxz": "地方储备粮原粮合计",
            "南海区": 22.00,
            "三水区": 22.00
        },
        {
            "pzid": "231",
            "禅城区": 64.00,
            "pzmc": "                          2、面粉",
            "高明区": 1.00,
            "顺德区": 12.00,
            "佛粮集团": 55.00,
            "pzxz": "库    存    合    计",
            "南海区": 1.00,
            "三水区": 1.00
        },
        {
            "pzid": "231",
            "禅城区": 23.00,
            "pzmc": "                          2、面粉",
            "高明区": 39.00,
            "顺德区": 35.00,
            "佛粮集团": 11.00,
            "pzxz": "六、其它粮食小计",
            "南海区": 39.00,
            "三水区": 39.00
        },
        {
            "pzid": "231",
            "禅城区": 14.00,
            "pzmc": "                          2、面粉",
            "高明区": 30.00,
            "顺德区": 26.00,
            "佛粮集团": 2.00,
            "pzxz": "五、商品周转粮小计",
            "南海区": 30.00,
            "三水区": 30.00
        },
        {
            "pzid": "236",
            "禅城区": 79.00,
            "pzmc": "                          3、大米 ",
            "高明区": 16.00,
            "顺德区": 27.00,
            "佛粮集团": 35.00,
            "pzxz": "三、省级储备粮小计",
            "南海区": 16.00,
            "三水区": 16.00
        },
        {
            "pzid": "236",
            "禅城区": 8.00,
            "pzmc": "                          4、大米 ",
            "高明区": 24.00,
            "顺德区": 20.00,
            "佛粮集团": 43.00,
            "pzxz": "地方储备粮原粮合计",
            "南海区": 24.00,
            "三水区": 24.00
        },
        {
            "pzid": "236",
            "禅城区": 66.00,
            "pzmc": "                          4、大米 ",
            "高明区": 3.00,
            "顺德区": 14.00,
            "佛粮集团": 57.00,
            "pzxz": "库    存    合    计",
            "南海区": 3.00,
            "三水区": 3.00
        },
        {
            "pzid": "236",
            "禅城区": 25.00,
            "pzmc": "                          4、大米 ",
            "高明区": 41.00,
            "顺德区": 37.00,
            "佛粮集团": 13.00,
            "pzxz": "六、其它粮食小计",
            "南海区": 41.00,
            "三水区": 41.00
        },
        {
            "pzid": "236",
            "禅城区": 16.00,
            "pzmc": "                          4、大米 ",
            "高明区": 32.00,
            "顺德区": 28.00,
            "佛粮集团": 4.00,
            "pzxz": "五、商品周转粮小计",
            "南海区": 32.00,
            "三水区": 32.00
        },
        {
            "pzid": "236",
            "禅城区": 73.00,
            "pzmc": "                        2、大  米",
            "高明区": 10.00,
            "顺德区": 21.00,
            "佛粮集团": 64.00,
            "pzxz": "二、"506"甲字粮小计",
            "南海区": 10.00,
            "三水区": 10.00
        }
    ]"""